package de.pyrazol.starshipRPG;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * Modell des Spiels
 */
public class GameModel
{
	
	/** Status des Spiels: Initialisierung erfolgt? */
	private boolean initialized = false;
	
	/** Liste der Spieler */
    private List<Player> players;
    
    /** Iterator: zeigt auf gerade aktiven Spieler */
    private Iterator<Player> playerIterator;
    
    /** Referenz auf den gerade aktiven Spieler */
    private Player currentPlayer;

    /** Referenz auf den menschlichen Spieler */
    private Player humanPlayer;
    
    /** Aktuelle Runde */
    private int currentRound;
    /** Vom Spieler gewonnene Runden */
    private int playerWonRounds;
    /** Vom Gegner gewonnene Runden */
    private int enemyWonRounds;
    
    /**
     * Konstruktor
     */
    public GameModel() {
    	
    }
    
    /**
     * Initialisiert das Spiel
     */
    public void initializeGame(Player human, List<Player> enemies) {
    	// Erzeuge die Spieler-Liste
    	players = new LinkedList<Player>();
    	
    	// Fuege die Spieler hinzu
    	players.add(human);
    	players.addAll(enemies);
    	
    	// Speichere die Referenz auf den menschlichen Spieler
    	this.humanPlayer = human;
    	
    	// erzeuge Iterator fuer gerade aktiven Spieler
    	this.playerIterator = players.iterator();
    	this.currentPlayer = playerIterator.next();
    	
    	// setze Flag
    	this.initialized = true;
    }
    
    /**
     * Gebe das Kommando weiter an den n&auml;chsten Spieler
     */
    public void nextPlayer()
    {
    	this.currentPlayer = this.playerIterator.next();
    }
    
    /**
     * Gebe zur&uuml;ck, ob das Spiel bereits initialisiert wurde
     */
    public boolean isInitialized() {
    	return this.initialized;
    }
    
    /**
     * Liefert die Liste der Spieler zur&uuml;ck
     */
    public List<Player> getPlayers() {
    	return this.players;
    }
     
}
